From 916e1ab0efb62abeaccf1a84fb97eb31ec30c4ab Mon Sep 17 00:00:00 2001 From: robertl Date: Fri, 20 Jun 2008 03:53:36 +0000 Subject: [PATCH] Add LAT_DDMMDIR/LON_DDMMDIR and make cup use it. --- csv_util.c | 28 +++- internal_styles.c | 45 +++++- style/cup.style | 4 +- xcsv_tokens.gperf | 305 +++++++++++++++++++------------------ xcsv_tokens.in | 2 + xmldoc/chapters/styles.xml | 34 ++++- 6 files changed, 260 insertions(+), 158 deletions(-) diff --git a/csv_util.c b/csv_util.c index 31886f4b4..680946b3b 100644 --- a/csv_util.c +++ b/csv_util.c @@ -93,6 +93,7 @@ typedef enum { XT_LAT_DIRDECIMAL, XT_LAT_HUMAN_READABLE, XT_LAT_INT32DEG, + XT_LAT_DDMMDIR, XT_LAT_NMEA, XT_LOCAL_TIME, XT_LON_DECIMAL, @@ -101,6 +102,7 @@ typedef enum { XT_LON_DIRDECIMAL, XT_LON_HUMAN_READABLE, XT_LON_INT32DEG, + XT_LON_DDMMDIR, XT_LON_NMEA, XT_MAP_EN_BNG, XT_NOTES, @@ -140,7 +142,7 @@ extern geocache_container gs_mkcont(const char *t); static double pathdist = 0; static double oldlon = 999; static double oldlat = 999; - + static int waypt_out_count; static route_head *csv_track, *csv_route; @@ -438,6 +440,24 @@ decdir_to_dec(const char * decdir) return(rval * sign); } + +/*****************************************************************************/ +/* ddmmdir_to_degrees() - convert ddmm/direction value into degrees */ +/* usage: lat = ddmmdir_to_degrees("W90.1234"); */ +/* lat = ddmmdir_to_degrees("30.1234N"); */ +/*****************************************************************************/ +static double +ddmmdir_to_degrees(const char * ddmmdir) +{ + // if not N or E, prepend a '-' to ddmm2degrees input + // see XT_LAT_NMEA which handles ddmm directly + if (strchr(ddmmdir, 'W') || strchr(ddmmdir, 'S')) + { + return ddmm2degrees(- atof(ddmmdir)); + } + return ddmm2degrees(atof(ddmmdir)); + +} #endif /***************************************************************************** @@ -958,6 +978,9 @@ xcsv_parse_val(const char *s, waypoint *wpt, const field_map_t *fmp) case XT_LAT_HUMAN_READABLE: human_to_dec( s, &wpt->latitude, &wpt->longitude, 1 ); break; + case XT_LAT_DDMMDIR: + wpt->latitude = ddmmdir_to_degrees(s); + break; case XT_LAT_NMEA: wpt->latitude = ddmm2degrees(atof(s)); break; @@ -979,6 +1002,9 @@ xcsv_parse_val(const char *s, waypoint *wpt, const field_map_t *fmp) case XT_LON_HUMAN_READABLE: human_to_dec( s, &wpt->latitude, &wpt->longitude, 2 ); break; + case XT_LON_DDMMDIR: + wpt->longitude = ddmmdir_to_degrees(s); + break; case XT_LON_NMEA: wpt->longitude = ddmm2degrees(atof(s)); break; diff --git a/internal_styles.c b/internal_styles.c index b370c6e90..c48607a33 100644 --- a/internal_styles.c +++ b/internal_styles.c @@ -101,8 +101,8 @@ static char cup[] = "IFIELD SHORTNAME,\"\", \"\"%s\"\"\n" "IFIELD SHORTNAME,\"\", \"%s\"\n" "IFIELD CONSTANT,\"\", \"\"\n" -"IFIELD LAT_NMEA, \"%f\", \"%08.3f\", \"absolute\"\n" -"IFIELD LON_NMEA, \"%f\", \"%09.3f\", \"absolute\"\n" +"IFIELD LAT_DDMMDIR, \"%f\", \"%08.3f\", \"absolute\"\n" +"IFIELD LON_DDMMDIR, \"%f\", \"%09.3f\", \"absolute\"\n" "IFIELD ALT_METERS,\"\", \"%dm\"\n" "IFIELD CONSTANT,\"\", \"1\"\n" "IFIELD CONSTANT,\"\", \"\"\n" @@ -477,6 +477,43 @@ static char gpsman[] = "IFIELD IGNORE, \"\", \"%s\"\n" "# gpsman.c likes mkshort len = 8, whitespace = 0.\n" +; +static char iblue747[] = +"# GPSBabel XCSV Style File http://www.gpsbabel.org/htmldoc-1.3.2/Styles.html\n" +"# Author: Christian Barmala http://www.barmala.de/\n" +"# License GNU Public License http://opensource.org/licenses/gpl-license.php\n" + +"DESCRIPTION Data Logger iBlue747 csv\n" +"EXTENSION csv\n" + + +"# FILE LAYOUT DEFINITIIONS:\n" + +"FIELD_DELIMITER COMMA\n" +"RECORD_DELIMITER NEWLINE\n" +"# BADCHARS COMMA\n" +"# SHORTLEN 16\n" +"# SHORTWHITE 0\n" +"# ENCODING UTF-8\n" +"DATATYPE TRACK\n" +"PROLOGUE INDEX,RCR,DATE,TIME,VALID,LATITUDE,N/S,LONGITUDE,E/W,HEIGHT,SPEED,DISTANCE,\n" + + +"# INDIVIDUAL DATA FIELDS, IN ORDER OF APPEARANCE:\n" + +"IFIELD INDEX,\"1\",\"%d\" # INDEX\n" +"IFIELD CONSTANT,\"T\",\"%s\" # RCR\n" +"IFIELD GMT_TIME,\"\",\"%Y/%m/%d\" # DATE\n" +"IFIELD HMSG_TIME,\"\",\"%H:%M:%S\" # TIME\n" +"IFIELD GPS_FIX,\"SPS\",\"%s\" # VALID # No fix, SPS, DGPS, PPS\n" +"IFIELD LAT_DECIMAL,\"\",\"%f\" # LATITUDE\n" +"IFIELD LAT_DIR,\"\",\"%s\" # N/S\n" +"IFIELD LON_DECIMAL,\"\",\"%f\" # LONGITUDE\n" +"IFIELD LON_DIR,\"\",\"%s\" # E/W\n" +"IFIELD ALT_METERS,\"\",\"%.0f\" # HEIGHT\n" +"PATH_SPEED_KPH,\"\",\"%.1f\" # SPEED\n" +"PATH_DISTANCE_KM,\"\",\"%f\" # DISTANCE\n" + ; static char kompass_tk[] = "# gpsbabel XCSV style file\n" @@ -1104,8 +1141,8 @@ static char xmapwpt[] = "IFIELD IGNORE, \"\", \"%-.31s\"\n" "IFIELD DESCRIPTION, \"\", \"%-.78s\"\n" ; -style_vecs_t style_list[] = {{ "xmapwpt", xmapwpt } , { "xmap2006", xmap2006 } , { "xmap", xmap } , { "tomtom_itn", tomtom_itn } , { "tomtom_asc", tomtom_asc } , { "tabsep", tabsep } , { "sportsim", sportsim } , { "saplus", saplus } , { "s_and_t", s_and_t } , { "openoffice", openoffice } , { "nima", nima } , { "mxf", mxf } , { "mapconverter", mapconverter } , { "kwf2", kwf2 } , { "ktf2", ktf2 } , { "kompass_wp", kompass_wp } , { "kompass_tk", kompass_tk } , { "gpsman", gpsman } , { "gpsdrivetrack", gpsdrivetrack } , { "gpsdrive", gpsdrive } , { "geonet", geonet } , { "garmin_poi", garmin_poi } , { "garmin301", garmin301 } , { "fugawi", fugawi } , { "dna", dna } , { "custom", custom } , { "cup", cup } , { "csv", csv } , { "cambridge", cambridge } , { "arc", arc } , {0,0}}; -size_t nstyles = 30; +style_vecs_t style_list[] = {{ "xmapwpt", xmapwpt } , { "xmap2006", xmap2006 } , { "xmap", xmap } , { "tomtom_itn", tomtom_itn } , { "tomtom_asc", tomtom_asc } , { "tabsep", tabsep } , { "sportsim", sportsim } , { "saplus", saplus } , { "s_and_t", s_and_t } , { "openoffice", openoffice } , { "nima", nima } , { "mxf", mxf } , { "mapconverter", mapconverter } , { "kwf2", kwf2 } , { "ktf2", ktf2 } , { "kompass_wp", kompass_wp } , { "kompass_tk", kompass_tk } , { "iblue747", iblue747 } , { "gpsman", gpsman } , { "gpsdrivetrack", gpsdrivetrack } , { "gpsdrive", gpsdrive } , { "geonet", geonet } , { "garmin_poi", garmin_poi } , { "garmin301", garmin301 } , { "fugawi", fugawi } , { "dna", dna } , { "custom", custom } , { "cup", cup } , { "csv", csv } , { "cambridge", cambridge } , { "arc", arc } , {0,0}}; +size_t nstyles = 31; #else /* CSVFMTS_ENABLED */ style_vecs_t style_list[] = {{0,0}}; size_t nstyles = 0; diff --git a/style/cup.style b/style/cup.style index 0a5c225aa..e2caae326 100644 --- a/style/cup.style +++ b/style/cup.style @@ -20,8 +20,8 @@ EPILOGUE -----Related Tasks----- IFIELD SHORTNAME,"", ""%s"" IFIELD SHORTNAME,"", "%s" IFIELD CONSTANT,"", "" -IFIELD LAT_NMEA, "%f", "%08.3f", "absolute" -IFIELD LON_NMEA, "%f", "%09.3f", "absolute" +IFIELD LAT_DDMMDIR, "%f", "%08.3f", "absolute" +IFIELD LON_DDMMDIR, "%f", "%09.3f", "absolute" IFIELD ALT_METERS,"", "%dm" IFIELD CONSTANT,"", "1" IFIELD CONSTANT,"", "" diff --git a/xcsv_tokens.gperf b/xcsv_tokens.gperf index 728fdc837..432e4253b 100644 --- a/xcsv_tokens.gperf +++ b/xcsv_tokens.gperf @@ -1,6 +1,6 @@ -/* ANSI-C code produced by gperf version 3.0.2 */ +/* ANSI-C code produced by gperf version 3.0.1 */ /* Command-line: gperf -L ANSI-C -D -t xcsv_tokens.in */ -/* Computed positions: -k'2,4-5,12' */ +/* Computed positions: -k'2,4-5,12,$' */ #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \ @@ -32,12 +32,12 @@ #line 1 "xcsv_tokens.in" struct xt_mapping {char *name; int xt_token; }; -#define TOTAL_KEYWORDS 69 +#define TOTAL_KEYWORDS 71 #define MIN_WORD_LENGTH 3 #define MAX_WORD_LENGTH 21 #define MIN_HASH_VALUE 7 -#define MAX_HASH_VALUE 148 -/* maximum key range = 142, duplicates = 0 */ +#define MAX_HASH_VALUE 154 +/* maximum key range = 148, duplicates = 0 */ #ifdef __GNUC__ __inline @@ -51,32 +51,32 @@ hash (register const char *str, register unsigned int len) { static unsigned char asso_values[] = { - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 0, 149, 0, 10, 5, - 55, 40, 20, 0, 149, 60, 30, 40, 0, 20, - 70, 149, 50, 45, 30, 149, 30, 149, 40, 10, - 149, 149, 149, 149, 149, 0, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149 + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 0, 155, 0, 0, 10, + 60, 0, 50, 30, 155, 15, 40, 40, 0, 25, + 30, 155, 0, 20, 15, 155, 40, 155, 25, 0, + 155, 155, 155, 155, 155, 0, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, + 155, 155, 155, 155, 155, 155 }; register int hval = len; @@ -102,7 +102,7 @@ hash (register const char *str, register unsigned int len) hval += asso_values[(unsigned char)str[1]]; break; } - return hval; + return hval + asso_values[(unsigned char)str[len - 1]]; } #ifdef __GNUC__ @@ -113,159 +113,164 @@ in_word_set (register const char *str, register unsigned int len) { static struct xt_mapping wordlist[] = { -#line 5 "xcsv_tokens.in" - {"ANYNAME", XT_ANYNAME}, -#line 43 "xcsv_tokens.in" +#line 39 "xcsv_tokens.in" + {"LAT_DIR", XT_LAT_DIR}, +#line 44 "xcsv_tokens.in" {"LAT_NMEA", XT_LAT_NMEA}, #line 31 "xcsv_tokens.in" {"ICON_DESCR", XT_ICON_DESCR}, -#line 6 "xcsv_tokens.in" - {"CADENCE", XT_CADENCE}, -#line 7 "xcsv_tokens.in" - {"CITY", XT_CITY}, -#line 52 "xcsv_tokens.in" +#line 43 "xcsv_tokens.in" + {"LAT_DDMMDIR", XT_LAT_DDMMDIR}, +#line 36 "xcsv_tokens.in" + {"LAT_DECIMALDIR", XT_LAT_DECIMALDIR}, +#line 5 "xcsv_tokens.in" + {"ANYNAME", XT_ANYNAME}, +#line 54 "xcsv_tokens.in" {"MAP_EN_BNG", XT_MAP_EN_BNG}, -#line 39 "xcsv_tokens.in" - {"LAT_DIR", XT_LAT_DIR}, -#line 15 "xcsv_tokens.in" - {"GEOCACHE_HINT", XT_GEOCACHE_HINT}, +#line 10 "xcsv_tokens.in" + {"DESCRIPTION", XT_DESCRIPTION}, +#line 20 "xcsv_tokens.in" + {"GEOCACHE_TERR", XT_GEOCACHE_TERR}, #line 19 "xcsv_tokens.in" {"GEOCACHE_PLACER", XT_GEOCACHE_PLACER}, -#line 37 "xcsv_tokens.in" - {"LAT_DECIMAL", XT_LAT_DECIMAL}, +#line 6 "xcsv_tokens.in" + {"CADENCE", XT_CADENCE}, #line 13 "xcsv_tokens.in" {"GEOCACHE_CONTAINER", XT_GEOCACHE_CONTAINER}, #line 16 "xcsv_tokens.in" {"GEOCACHE_ISARCHIVED", XT_GEOCACHE_ISARCHIVED}, -#line 17 "xcsv_tokens.in" - {"GEOCACHE_ISAVAILABLE", XT_GEOCACHE_ISAVAILABLE}, -#line 51 "xcsv_tokens.in" - {"LON_NMEA", XT_LON_NMEA}, -#line 60 "xcsv_tokens.in" - {"PATH_SPEED", XT_PATH_SPEED}, -#line 54 "xcsv_tokens.in" - {"PATH_COURSE", XT_PATH_COURSE}, -#line 61 "xcsv_tokens.in" - {"PHONE_NR", XT_PHONE_NR}, -#line 36 "xcsv_tokens.in" - {"LAT_DECIMALDIR", XT_LAT_DECIMALDIR}, -#line 55 "xcsv_tokens.in" - {"PATH_DISTANCE_KM", XT_PATH_DISTANCE_KM}, -#line 48 "xcsv_tokens.in" +#line 49 "xcsv_tokens.in" {"LON_DIR", XT_LON_DIR}, -#line 12 "xcsv_tokens.in" - {"FACILITY", XT_FACILITY}, -#line 56 "xcsv_tokens.in" - {"PATH_DISTANCE_MILES", XT_PATH_DISTANCE_MILES}, +#line 53 "xcsv_tokens.in" + {"LON_NMEA", XT_LON_NMEA}, +#line 7 "xcsv_tokens.in" + {"CITY", XT_CITY}, +#line 70 "xcsv_tokens.in" + {"TRACK_NAME", XT_TRACK_NAME}, +#line 52 "xcsv_tokens.in" + {"LON_DDMMDIR", XT_LON_DDMMDIR}, +#line 15 "xcsv_tokens.in" + {"GEOCACHE_HINT", XT_GEOCACHE_HINT}, #line 46 "xcsv_tokens.in" - {"LON_DECIMAL", XT_LON_DECIMAL}, -#line 40 "xcsv_tokens.in" - {"LAT_HUMAN_READABLE", XT_LAT_HUMAN_READABLE}, -#line 67 "xcsv_tokens.in" - {"TIMET_TIME", XT_TIMET_TIME}, -#line 33 "xcsv_tokens.in" - {"INDEX", XT_INDEX}, -#line 66 "xcsv_tokens.in" - {"STREET_ADDR", XT_STREET_ADDR}, + {"LON_DECIMALDIR", XT_LON_DECIMALDIR}, +#line 17 "xcsv_tokens.in" + {"GEOCACHE_ISAVAILABLE", XT_GEOCACHE_ISAVAILABLE}, +#line 32 "xcsv_tokens.in" + {"IGNORE", XT_IGNORE}, #line 41 "xcsv_tokens.in" {"LAT_INT32DEG", XT_LAT_INT32DEG}, -#line 70 "xcsv_tokens.in" +#line 72 "xcsv_tokens.in" {"URL", XT_URL}, -#line 45 "xcsv_tokens.in" - {"LON_DECIMALDIR", XT_LON_DECIMALDIR}, +#line 28 "xcsv_tokens.in" + {"HEART_RATE", XT_HEART_RATE}, +#line 68 "xcsv_tokens.in" + {"STREET_ADDR", XT_STREET_ADDR}, #line 9 "xcsv_tokens.in" {"COUNTRY", XT_COUNTRY}, -#line 44 "xcsv_tokens.in" - {"LOCAL_TIME", XT_LOCAL_TIME}, -#line 62 "xcsv_tokens.in" - {"POSTAL_CODE", XT_POSTAL_CODE}, -#line 49 "xcsv_tokens.in" - {"LON_HUMAN_READABLE", XT_LON_HUMAN_READABLE}, -#line 38 "xcsv_tokens.in" - {"LAT_DIRDECIMAL", XT_LAT_DIRDECIMAL}, -#line 63 "xcsv_tokens.in" - {"ROUTE_NAME", XT_ROUTE_NAME}, -#line 10 "xcsv_tokens.in" - {"DESCRIPTION", XT_DESCRIPTION}, -#line 20 "xcsv_tokens.in" - {"GEOCACHE_TERR", XT_GEOCACHE_TERR}, #line 18 "xcsv_tokens.in" {"GEOCACHE_LAST_FOUND", XT_GEOCACHE_LAST_FOUND}, -#line 65 "xcsv_tokens.in" +#line 37 "xcsv_tokens.in" + {"LAT_DECIMAL", XT_LAT_DECIMAL}, +#line 35 "xcsv_tokens.in" + {"ISO_TIME", XT_ISO_TIME}, +#line 67 "xcsv_tokens.in" {"STATE", XT_STATE}, -#line 42 "xcsv_tokens.in" - {"LATLON_HUMAN_READABLE", XT_LATLON_HUMAN_READABLE}, -#line 50 "xcsv_tokens.in" +#line 29 "xcsv_tokens.in" + {"HMSG_TIME", XT_HMSG_TIME}, +#line 62 "xcsv_tokens.in" + {"PATH_SPEED", XT_PATH_SPEED}, +#line 64 "xcsv_tokens.in" + {"POSTAL_CODE", XT_POSTAL_CODE}, +#line 21 "xcsv_tokens.in" + {"GEOCACHE_TYPE", XT_GEOCACHE_TYPE}, +#line 33 "xcsv_tokens.in" + {"INDEX", XT_INDEX}, +#line 34 "xcsv_tokens.in" + {"ISO_TIME_MS", XT_ISO_TIME_MS}, +#line 51 "xcsv_tokens.in" {"LON_INT32DEG", XT_LON_INT32DEG}, -#line 14 "xcsv_tokens.in" - {"GEOCACHE_DIFF", XT_GEOCACHE_DIFF}, -#line 59 "xcsv_tokens.in" - {"PATH_SPEED_MPH", XT_PATH_SPEED_MPH}, -#line 53 "xcsv_tokens.in" - {"NOTES", XT_NOTES}, +#line 63 "xcsv_tokens.in" + {"PHONE_NR", XT_PHONE_NR}, +#line 65 "xcsv_tokens.in" + {"ROUTE_NAME", XT_ROUTE_NAME}, +#line 56 "xcsv_tokens.in" + {"PATH_COURSE", XT_PATH_COURSE}, +#line 26 "xcsv_tokens.in" + {"GPS_SAT", XT_GPS_SAT}, #line 22 "xcsv_tokens.in" {"GMT_TIME", XT_GMT_TIME}, -#line 30 "xcsv_tokens.in" - {"HMSL_TIME", XT_HMSL_TIME}, -#line 4 "xcsv_tokens.in" - {"ALT_METERS", XT_ALT_METERS}, -#line 35 "xcsv_tokens.in" - {"ISO_TIME", XT_ISO_TIME}, +#line 69 "xcsv_tokens.in" + {"TIMET_TIME", XT_TIMET_TIME}, #line 47 "xcsv_tokens.in" - {"LON_DIRDECIMAL", XT_LON_DIRDECIMAL}, -#line 11 "xcsv_tokens.in" - {"EXCEL_TIME", XT_EXCEL_TIME}, -#line 34 "xcsv_tokens.in" - {"ISO_TIME_MS", XT_ISO_TIME_MS}, -#line 21 "xcsv_tokens.in" - {"GEOCACHE_TYPE", XT_GEOCACHE_TYPE}, -#line 29 "xcsv_tokens.in" - {"HMSG_TIME", XT_HMSG_TIME}, -#line 3 "xcsv_tokens.in" - {"ALT_FEET", XT_ALT_FEET}, -#line 58 "xcsv_tokens.in" - {"PATH_SPEED_KPH", XT_PATH_SPEED_KPH}, -#line 28 "xcsv_tokens.in" - {"HEART_RATE", XT_HEART_RATE}, -#line 57 "xcsv_tokens.in" - {"PATH_SPEED_KNOTS", XT_PATH_SPEED_KNOTS}, -#line 24 "xcsv_tokens.in" - {"GPS_HDOP", XT_GPS_HDOP}, + {"LON_DECIMAL", XT_LON_DECIMAL}, +#line 12 "xcsv_tokens.in" + {"FACILITY", XT_FACILITY}, +#line 55 "xcsv_tokens.in" + {"NOTES", XT_NOTES}, #line 8 "xcsv_tokens.in" {"CONSTANT", XT_CONSTANT}, -#line 27 "xcsv_tokens.in" - {"GPS_VDOP", XT_GPS_VDOP}, -#line 64 "xcsv_tokens.in" +#line 66 "xcsv_tokens.in" {"SHORTNAME", XT_SHORTNAME}, +#line 45 "xcsv_tokens.in" + {"LOCAL_TIME", XT_LOCAL_TIME}, +#line 40 "xcsv_tokens.in" + {"LAT_HUMAN_READABLE", XT_LAT_HUMAN_READABLE}, +#line 58 "xcsv_tokens.in" + {"PATH_DISTANCE_MILES", XT_PATH_DISTANCE_MILES}, #line 71 "xcsv_tokens.in" + {"URL_LINK_TEXT", XT_URL_LINK_TEXT}, +#line 38 "xcsv_tokens.in" + {"LAT_DIRDECIMAL", XT_LAT_DIRDECIMAL}, +#line 11 "xcsv_tokens.in" + {"EXCEL_TIME", XT_EXCEL_TIME}, +#line 42 "xcsv_tokens.in" + {"LATLON_HUMAN_READABLE", XT_LATLON_HUMAN_READABLE}, +#line 25 "xcsv_tokens.in" + {"GPS_PDOP", XT_GPS_PDOP}, +#line 30 "xcsv_tokens.in" + {"HMSL_TIME", XT_HMSL_TIME}, +#line 59 "xcsv_tokens.in" + {"PATH_SPEED_KNOTS", XT_PATH_SPEED_KNOTS}, +#line 73 "xcsv_tokens.in" {"YYYYMMDD_TIME", XT_YYYYMMDD_TIME}, -#line 32 "xcsv_tokens.in" - {"IGNORE", XT_IGNORE}, -#line 68 "xcsv_tokens.in" - {"TRACK_NAME", XT_TRACK_NAME}, -#line 26 "xcsv_tokens.in" - {"GPS_SAT", XT_GPS_SAT}, +#line 57 "xcsv_tokens.in" + {"PATH_DISTANCE_KM", XT_PATH_DISTANCE_KM}, +#line 27 "xcsv_tokens.in" + {"GPS_VDOP", XT_GPS_VDOP}, +#line 4 "xcsv_tokens.in" + {"ALT_METERS", XT_ALT_METERS}, +#line 50 "xcsv_tokens.in" + {"LON_HUMAN_READABLE", XT_LON_HUMAN_READABLE}, +#line 24 "xcsv_tokens.in" + {"GPS_HDOP", XT_GPS_HDOP}, +#line 48 "xcsv_tokens.in" + {"LON_DIRDECIMAL", XT_LON_DIRDECIMAL}, #line 23 "xcsv_tokens.in" {"GPS_FIX", XT_GPS_FIX}, -#line 69 "xcsv_tokens.in" - {"URL_LINK_TEXT", XT_URL_LINK_TEXT}, -#line 25 "xcsv_tokens.in" - {"GPS_PDOP", XT_GPS_PDOP} +#line 3 "xcsv_tokens.in" + {"ALT_FEET", XT_ALT_FEET}, +#line 60 "xcsv_tokens.in" + {"PATH_SPEED_KPH", XT_PATH_SPEED_KPH}, +#line 14 "xcsv_tokens.in" + {"GEOCACHE_DIFF", XT_GEOCACHE_DIFF}, +#line 61 "xcsv_tokens.in" + {"PATH_SPEED_MPH", XT_PATH_SPEED_MPH} }; static signed char lookup[] = { - -1, -1, -1, -1, -1, -1, -1, 0, 1, -1, 2, -1, 3, -1, - 4, 5, -1, 6, 7, -1, 8, 9, -1, 10, 11, 12, -1, -1, - 13, -1, 14, 15, -1, 16, 17, -1, 18, 19, 20, 21, -1, 22, - -1, 23, -1, 24, -1, -1, -1, -1, 25, 26, 27, 28, 29, -1, - -1, 30, -1, -1, 31, 32, -1, 33, 34, 35, 36, -1, 37, 38, - 39, 40, 41, 42, 43, 44, -1, -1, 45, 46, 47, -1, -1, 48, - 49, 50, 51, -1, 52, 53, -1, -1, -1, 54, 55, 56, 57, -1, - 58, -1, -1, -1, -1, 59, -1, -1, -1, -1, 60, 61, -1, -1, - -1, 62, -1, -1, 63, -1, -1, -1, 64, -1, 65, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 66, 67, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 68 + -1, -1, -1, -1, -1, -1, -1, 0, 1, -1, 2, 3, -1, -1, + 4, -1, -1, 5, -1, -1, 6, 7, -1, 8, -1, 9, -1, 10, + 11, 12, -1, -1, 13, 14, 15, 16, 17, -1, 18, 19, 20, 21, + 22, 23, -1, 24, 25, 26, -1, 27, -1, 28, -1, 29, -1, 30, + -1, -1, -1, 31, 32, 33, -1, 34, -1, 35, 36, 37, 38, -1, + 39, 40, 41, 42, -1, 43, 44, -1, 45, -1, 46, -1, -1, 47, + 48, 49, -1, -1, 50, 51, -1, -1, -1, 52, 53, 54, 55, -1, + 56, 57, -1, 58, -1, 59, -1, -1, 60, -1, 61, -1, 62, -1, + -1, 63, -1, -1, -1, -1, 64, 65, -1, -1, 66, 67, -1, -1, + -1, -1, -1, 68, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 69, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 70 }; if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) diff --git a/xcsv_tokens.in b/xcsv_tokens.in index 460ed0003..b71e8f0aa 100644 --- a/xcsv_tokens.in +++ b/xcsv_tokens.in @@ -40,6 +40,7 @@ LAT_DIR, XT_LAT_DIR LAT_HUMAN_READABLE, XT_LAT_HUMAN_READABLE LAT_INT32DEG, XT_LAT_INT32DEG LATLON_HUMAN_READABLE, XT_LATLON_HUMAN_READABLE +LAT_DDMMDIR, XT_LAT_DDMMDIR LAT_NMEA, XT_LAT_NMEA LOCAL_TIME, XT_LOCAL_TIME LON_DECIMALDIR, XT_LON_DECIMALDIR @@ -48,6 +49,7 @@ LON_DIRDECIMAL, XT_LON_DIRDECIMAL LON_DIR, XT_LON_DIR LON_HUMAN_READABLE, XT_LON_HUMAN_READABLE LON_INT32DEG, XT_LON_INT32DEG +LON_DDMMDIR, XT_LON_DDMMDIR LON_NMEA, XT_LON_NMEA MAP_EN_BNG, XT_MAP_EN_BNG NOTES, XT_NOTES diff --git a/xmldoc/chapters/styles.xml b/xmldoc/chapters/styles.xml index 4223913a2..21df6b18e 100644 --- a/xmldoc/chapters/styles.xml +++ b/xmldoc/chapters/styles.xml @@ -701,6 +701,22 @@ example: +
+LAT_DDMMDIR + +Derived from the LAT_NMEA latitude format, with degrees * 100 plus decimal +minutes, but using a trailing 'N' or 'S' instead of a leading minus sign (or +absence thereof) to give direction from zero. + + + IFIELD LAT_DDMMDIR, "%f", "%08.3f%c" # (writes "5334.192S" giving -53.56987 degrees latitude) + + +
+ + + +
LON_NMEA @@ -708,12 +724,28 @@ example: degrees multiplied by 100 plus decimal minutes. -example: +Example: IFIELD LON_NMEA, "%f", "%010.3f" # (writes -08708.082)
+
+LON_DDMMDIR + +Derived from the LON_NMEA longitude format, with degrees * 100 plus decimal minutes, but using a +trailing 'E' or 'W' instead of a leading minus sign (or absence thereof) to give direction from +zero. + + +Example: + + IFIELD LON_DDMMDIR, "%f", "%010.3f%c" # (writes "01232.745W" giving -12.54575 degrees +longitude) + +
+ +
LAT_10EX / LON_10EX -- 2.30.2